home *** CD-ROM | disk | FTP | other *** search
- /* Plays first 4 seconds of each track */
-
- l="rxcd.library";if ~show("L",l) then;if ~addlib(l,0,-30) then exit
- l="rmh.library";if ~show("L",l) then;if ~addlib(l,0,-30) then exit
-
- else cdName=
- parm.0.value="cd0"
- parm.1.value=4
-
- secs=parm.0.value
- if ~ReadArgs("DEVICE,SECS/K/N") then do
- call PrintFault()
- exit
- end
-
- signal on halt
- signal on break_c
-
- cdName=parm.0.value
- secs=parm.1.value
- if secs<0 | secs>9 then do
- say "Error invalid value '"secs"' for SECS"
- exit
- end
-
- cd = CDCreate(cdName)
- if cd=0 then do
- say "Error for ["cdName"]:" GetRxCDString(RC)
- exit
- end
-
- if CDInfo(cd,"db","info")=0 then iscd=(info.PeripheralType==5)
- else iscd=0
- if ~iscd then do
- say "Error: ["cdName"] is not a cd device"
- exit
- end
-
- if CDModeSense(cd,"db","MS")=0 then isdatacdin=(and(ms.mediumtype,2)=0)
- else isdatacdin=0
- if isdatacdin then do
- say "Error: there is no audio cd in ["cdName"]"
- exit
- end
-
- res = CDTOC(cd,"db",'toc')
- if res~=0 then do
- say "Error: can't read TOC of ["cdName"]"
- exit
- end
-
- say
- say "---- Intro ----"
- say " Device:" cdName
- say " Tracks:" toc.Num
- say "FirstTrack:" toc.FirstTrack
- say " LastTrack:" toc.LastTrack
- say " StartAddr:" toc.StartAddr
- say " EndAddr:" toc.EndAddr
- say " CDDB ID:" toc.ID
- say "[press cltr-c to exit]"
- say
- say "Initializing..."
-
- ctrl_c=2**12
- tim = CreateTimer()
- ts = TimerSignal(tim)
- do i=0 to toc.num-1
- if ~toc.i.Audio then iterate
-
- if CDPlay10(cd,"db",toc.i.StartAddr,secs*75)~=0 then signal ChangeStatus()
-
- call SayTrack(i,0)
- do j=1 to secs
- call StartTimer(tim,1)
- recv = Wait(or(ts,ctrl_c))
- if and(recv,ctrl_c)>0 then signal break_c
- call SayTrack(i,j)
- end
- end
- say "B"x || "Done. "
- exit
-
- FNum:
- parse arg n
- return right("00" || n,2)
-
- SayTrack:
- parse arg i,j
- say "B"x || "Track#"toc.i.track i+1"/"toc.Num "("FNum(toc.i.Min)":"FNum(toc.i.Sec)") [00:0"j"]"
- return
-
- ChangeStatus:
- if CDModeSense(cd,"db","MS")=0 then isdatacdin=(and(ms.mediatype,2)~=0)
- else isdatacdin=0
- if ~isdatacdin then do
- say "Error: there is no audio cd in ["cdName"]"
- exit
- end
-
- halt:
- break_c:
- exit
-
-